package com.seeyon.v3x.mail.manager;

import com.seeyon.v3x.mail.manager.SystemEmailConfig;
import com.seeyon.v3x.mail.util.AffixList;

import java.util.Date;
import java.util.List;

/**
 * 系统消息邮件通知
 * @author <a href="mailto:fishsoul@126.com">Mazc</a>
 * @version 1.0 2008-12-19
 */
public interface MessageMailManager
{
    /**
     * 通过邮件发送系统消息
     * @param toEmail : 接收者的EMail地址
     * @param content : 通知的内容
     */
    public boolean sendMessageByMail(String toEmail, String subject, String content);
    
    /**
     * 通过邮件发送系统消息
     * @param toEmail : 接收者的EMail地址列表
     * @param content : 通知的内容
     */
    public boolean sendMessageByMail(List<String> toMailList, String subject, String content, Date sendDate);
    
    /**
     * 通过邮件发送系统消息 
     * @param toEmail : 接收者的EMail地址
     * @param subject : 通知的标题
     * @param content : 通知的内容
     * @param sendDate : 发起时间
     */
    public boolean sendMessageByMail(String toEmail, String subject, String content, Date sendDate);

    /**
     * #强生客开
     * 通过邮件发送系统消息
     * @param toMailList : 接收者的EMail地址
     * @param ccMailList : 抄送者的EMail地址
     * @param subject : 通知的标题
     * @param content : 通知的内容
     * @param sendDate : 发起时间附件列表
     * @param affixList :
     */
    public boolean sendMessageByMail(List<String> toMailList,List<String> ccMailList, String subject, String content, Date sendDate, AffixList affixList);
    
    /**
     * 判断管理员是否设置了系统邮箱
     * @return
     */
    public boolean hasSystemMailbox();
    
    /**
     * 取得系统邮箱设置信息
     * @return
     */
    public SystemEmailConfig getSysEMailConfig();
    
	public int getContentLinkValidity();

	public boolean isContentWithLink();
    
    /**
     * 设置系统邮箱
     *  @param MailAddress 邮箱地址
     *  @param SMTP SMTP服务器地址
     *  @param UserName 用户名
     *  @param Password 密码
     */
    public void saveSystemMailboxSetting(String emailAddress, String smtpHost,
                                         String emailPwd, boolean isAppendLink,
                                         int availableTime, String suffer, String userName, int pop3Port, int smtpPort, boolean isSendOnline);

    /**
     * 取消邮箱设置
     */
    public void cancelSystemMailboxSetting();

    /**
     * 系统管理员测试邮件消息发送
     */
    public boolean testEmailSend(String smtpHostName, String sysEmailAddress, String emailPassword, String recEmailAddress, String userName, String smtpPort);

    /**
     * 邮件消息发送测试，AJAX调用
     * @param smtpHostName
     * @param sysEmailAddress
     * @param emailPassword
     * @param recEmailAddress
     * @param userName
     * @param smtpPort
     * @return
     */
    public boolean testSendEMail(String smtpHostName, String sysEmailAddress, String emailPassword, String recEmailAddress, String userName, String smtpPort);
}
